package com.icbc.open.chengdu.demo.utils;

import com.icbc.api.AESKeyGen;

import java.io.*;

/**
 * 数据保存到文件，供其他API使用
 *
 * @author xcz
 */
public class SaveFileUtils {

    private static final String OPEN_ACCOUNT = "openAcount.txt";
    private static final String CLOSE_ACCOUNT = "closeAcount.txt";
    private static final String BIND_MEDIUM = "bindMedium.txt";
    private static final String SMS_SEND_NO = "scode.txt";


    public static void main(String[] args) throws Exception {
        setOpenAccount("123456789");
        System.out.println(getOpenAccount());
    }


    /**
     * 保存短信验证码编号
     * @param no 编号
     */
    public static void setSmsSendNo(String no) {
        saveNo(SMS_SEND_NO, no);
    }

    /**
     * 获取短信验证码编号
     * @return 编号
     */
    public static String getSmsSendNo() {
        return readNo(SMS_SEND_NO);
    }

    /**
     * 保存开户单号
     * @param no 单号
     */
    public static void setOpenAccount(String no) {
        saveNo(OPEN_ACCOUNT, no);
    }

    /**
     * 获取开户单号
     * @return 单号
     */
    public static String getOpenAccount() {
        return readNo(OPEN_ACCOUNT);
    }

    /**
     * 保存销户单号
     * @param no 单号
     */
    public static void setCloseAccount(String no) {
        saveNo(CLOSE_ACCOUNT, no);
    }

    /**
     * 获取销户单号
     * @return 单号
     */
    public static String getCloseAccount() {
        return readNo(CLOSE_ACCOUNT);
    }

    /**
     * 保存绑定单号
     * @param no 单号
     */
    public static void setBindMedium(String no) {
        saveNo(BIND_MEDIUM, no);
    }

    /**
     * 获取绑定单号
     * @return 单号
     */
    public static String getBindMedium() {
        return readNo(BIND_MEDIUM);
    }


    /**
     * 保存单号到对应文件
     * @param fileName 文件名
     * @param no 单号
     */
    private static void saveNo(String fileName, String no) {
        try {
            AESKeyGen.saveKey(fileName, no);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 从对应文件中读取单号
     * @param fileName 文件名
     * @return 单号
     */
    public static String readNo(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        StringBuffer data = new StringBuffer();
        try {
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;

            // 一次读入一行，直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                data.append(tempString);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return data.toString().trim();
    }

}
